#ifndef CLAVEINTCHAR_H_
#define CLAVEINTCHAR_H_

#include "DatoClave.h"

class ClaveIntChar: public DatoClave {

private:
	int entero;
	char letra;

public:

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia.
	 */
	ClaveIntChar(int entero, char letra);

	/*
	 * Pre: Bytes validos.
	 * Pos: Crea una nueva instancia.
	 */
	ClaveIntChar(const Bytes& clave);

	/*
	 * Pre: -
	 * Pos: Libera los recursos instanciados.
	 */
	virtual ~ClaveIntChar();

	/*
	 * Pre: -
	 * Pos: recarga de operadores.
	 */
	virtual bool operator==(const DatoClave& otro)const;
	virtual bool operator<(const DatoClave& otro)const;
	virtual bool operator>(const DatoClave& otro)const;
	virtual bool operator<=(const DatoClave& otro)const;

	/*
	 * Pre: -
	 * Pos: Serializa el estado del objeto.
	 */
	virtual Bytes serializarse();

	/*
	 * Pre: -
	 * Pos: Hidrata el estado del objeto.
	 */
	virtual bool hidratarse(const Bytes&);

	/*
	 * Pre: -
	 * Pos: devuelve un string con los datos del objeto.
	 */
	virtual std::string toString()const;

	/*
	 * Pre: -
	 * Pos: Devuelve una copia del objeto.
	 */
	virtual DatoClave* getCopia();
};

#endif /* CLAVEINTCHAR_H_ */
